home *** CD-ROM | disk | FTP | other *** search
/ ftp.alaska-software.com / 2014.06.ftp.alaska-software.com.tar / ftp.alaska-software.com / 3pp / mxsetup.old / {app} / PbMenBar.prg < prev    next >
Text File  |  2001-09-30  |  8KB  |  261 lines

  1. //////////////////////////////////////////////////////////////////////
  2. //
  3. //  PbMenBar.PRG
  4. //
  5. //  Copyright:
  6. //      Maniacc Software Inc., (c) 2000. All rights reserved.         
  7. //  
  8. //  Contents:
  9. //      PushButtonMenu Class
  10. //
  11. //  Created 12/24/2000
  12. //   
  13. //////////////////////////////////////////////////////////////////////
  14.  
  15. #include "Xbp.ch"
  16. #include "Appevent.ch"
  17. #include "Gra.ch"
  18. #include "Mx.ch"
  19. #include "Common.ch"
  20. #include "Dll.ch"
  21.  
  22. *******************************************************************
  23. * ( MxPbMenuBar ) CLASS DEFINITION
  24. *******************************************************************
  25.  
  26. CLASS MxPbMenuBar FROM XbpStatic
  27.  
  28.     EXPORTED:
  29.         VAR aItems
  30.         VAR nHeight, type
  31.         VAR lDefaults
  32.  
  33.     METHOD init, create, addItem
  34.  
  35. ENDCLASS
  36.  
  37.  
  38.  
  39. *******************************************************************
  40. * ( MxPbMenuBar ) METHOD init
  41. *******************************************************************
  42.  
  43. METHOD MxPbMenuBar:init()
  44.  
  45.     ::xbpStatic:init()
  46.  
  47.     ::aItems    := {}
  48.     ::nHeight   := 32
  49.     ::type      := MX_RECESSED
  50.     ::lDefaults := .F.
  51.  
  52. RETURN self
  53.  
  54.  
  55.  
  56. *******************************************************************
  57. * ( MxPbMenuBar ) METHOD create
  58. *******************************************************************
  59.  
  60. METHOD MxPbMenuBar:create()
  61.  
  62.     LOCAL oXbp
  63.     LOCAL aPos  := setAppWindow():drawingArea:currentPos()
  64.     LOCAL aSize := setAppWindow():drawingArea:currentSize()
  65.     LOCAL i, j, nItems := len(::aItems)
  66.  
  67.     setAppWindow():drawingArea:setSize({aSize[1],aSize[2]-::nHeight})
  68.     aPos  := {aPos[1],aSize[2]-::nHeight}
  69.     aSize := {aSize[1],::nHeight}
  70.  
  71.     if ::type==MX_RAISED
  72.         ::XbpStatic:type := XBPSTATIC_TYPE_RAISEDBOX
  73.     elseif ::type==MX_RECESSED
  74.         ::XbpStatic:type := XBPSTATIC_TYPE_RECESSEDBOX
  75.     elseif ::type==MX_FLAT
  76.         ::XbpStatic:type := XBPSTATIC_TYPE_TEXT
  77.     else
  78.         ::XbpStatic:type := XBPSTATIC_TYPE_TEXT
  79.     endif
  80.     ::XbpStatic:create( setAppWindow(), , aPos, aSize )
  81.     ::cargo := {}
  82.  
  83.     if ::lDefaults
  84.         if aSize[1]>600
  85.             ::addItem("VLine",{ ::XbpStatic,,{aSize[1]-354,4},{3,aSize[2]-8}})
  86.             ::addItem("MXPB",{ ::XbpStatic,,{aSize[1]-349,3},{40,40},,,MX_FLYOVER,{"",{0,0},{0,0},""},{ICON_CLIPBOARD,{5,5},{25,32},1}},{||runshell( "","Clipbrd.exe",.T.),setAppWindow():show()} )
  87.             ::addItem("MXPB",{ ::XbpStatic,,{aSize[1]-307,3},{40,40},,,MX_FLYOVER,{"",{0,0},{0,0},""},{ICON_OPENFILE,{5,5},{32,32},1}},{||MxFileOpen(,.T.)} )
  88.             ::addItem("MXPB",{ ::XbpStatic,,{aSize[1]-265,3},{40,40},,,MX_FLYOVER,{"",{0,0},{0,0},""},{ICON_PRINTER,{5,5},{32,32},1}},{||setAppWindow():disable(),MxListProg(),setAppWindow():enable(),setAppFocus(setAppWindow())} )
  89.         endif
  90.  
  91.         ::addItem("VLine",{ ::XbpStatic,,{aSize[1]-220,4},{3,aSize[2]-8}})
  92.         ::addItem("MXPB",{ ::XbpStatic,,{aSize[1]-213,3},{32,40},,,MX_FLYOVER,{"",{0,0},{0,0},""},{ICON_CALCULATOR,{5,5},{28,32},1}},{||runshell( "","Calc.exe",.T.)} )
  93.  
  94.         ::addItem("VLine",{ ::XbpStatic,,{aSize[1]-177,4},{3,aSize[2]-8}})
  95.         ::addItem("SLE",{ ::XbpStatic,,{aSize[1]-170,24},{165,20},,,{" Company: "+"Maniacc Software",,"9.Arial Bold"}} )
  96.         ::addItem("SLE",{ ::XbpStatic,,{aSize[1]-170,4},{165,20},,,{" User: "+"Demonstration",,"9.Arial Bold"}} )
  97.     endif
  98.     
  99.     if nItems>0
  100.         for i := 1 to nItems
  101.             do while len(::aItems[i])<12
  102.                 aAdd(::aItems[i],Nil)
  103.             enddo
  104.              ::addItem( ::aItems[i,1],;
  105.                        ::aItems[i,2],;
  106.                        ::aItems[i,3],;
  107.                        ::aItems[i,4],;
  108.                        ::aItems[i,5],;
  109.                        ::aItems[i,6],;
  110.                        ::aItems[i,7],;
  111.                        ::aItems[i,8],;
  112.                        ::aItems[i,9],;
  113.                        ::aItems[i,10],;
  114.                        ::aItems[i,11],;
  115.                        ::aItems[i,12] )
  116.             aAdd(::XbpStatic:cargo,::aItems[i,8])
  117.         next i
  118.     endif
  119.  
  120.     ::resize := { |aOldSize,aNewSize,oObj| ::XbpStatic:setSize({aNewSize[1],::nHeight}),::show() }
  121.  
  122. RETURN self
  123.  
  124.  
  125.  
  126. *******************************************************************
  127. * ( MxPbMenuBar ) METHOD addItem
  128. *******************************************************************
  129. * Add an Item to the MxPbMenuBar
  130. * Parameters:
  131. *   cType:        "Pb", "MxPb", "Txt", "VLine", "HLine", "Sle", "Cb"
  132. *   aArray:       Calling Parameters for "Wrapper depending on cType
  133. *   bBlock:        Code Block to be executed 
  134. *******************************************************************
  135.  
  136. METHOD MxPbMenuBar:addItem( cType,;
  137.                           aArray,;
  138.                           bBlock )
  139.     // Note:  aArray should contain the calling Parameters
  140.     //        for the wrapper being used.
  141.  
  142.     LOCAL aMenArray
  143.     LOCAL oOwner := ::XbpStatic, oXbp
  144.     LOCAL i, nCapHt := 40
  145.  
  146.     do while len(aArray)<9
  147.         aAdd(aArray,Nil)
  148.     enddo
  149.  
  150.     DEFAULT cType to "PB"
  151.     DEFAULT bBlock to { || Nil }
  152.     if valtype(bBlock)=="B"
  153.         bBlock := bBlock
  154.     elseif valtype(bBlock)=="A"
  155.         i := len(::XbpStatic:childList())+1
  156.         bBlock := { |u1,u2,oBtn| popMenu(oBtn,::XbpStatic:cargo[i]) }
  157.     endif
  158.  
  159.     if upper(cType)=="PB".or.upper(cType)=="MXPB"
  160.         oXbp := MxPshBtn( aArray[1],aArray[2],aArray[3],aArray[4],aArray[5],aArray[6],aArray[7],aArray[8],aArray[9] )
  161.         oXbp:activate := bBlock
  162.         oXbp:helpLink := ToolHelpLabel():new()
  163.         oXbp:cargo := "PBMENU"+alltrim(str(len(::XbpStatic:childList())))
  164.     elseif upper(cType)=="TXT"
  165.         oXbp := MxText( aArray[1],aArray[2],aArray[3],aArray[4],aArray[5],aArray[6],aArray[7] )
  166.     elseif upper(cType)=="VLINE"
  167.         oXbp := MxVline(aArray[1],aArray[2],aArray[3],aArray[4],aArray[5],aArray[6])
  168.     elseif upper(cType)=="HLINE"
  169.         oXbp := MxHline(aArray[1],aArray[2],aArray[3],aArray[4],aArray[5],aArray[6])
  170.     elseif upper(cType)=="SLE"
  171.         oXbp := MxSLE( aArray[1],aArray[2],aArray[3],aArray[4],aArray[5],aArray[6],aArray[7] )
  172.         oXbp:disable()
  173.         oXbp:helpLink := ToolHelpLabel():new()
  174.         oXbp:cargo := "PBMENU"+alltrim(str(len(::XbpStatic:childList())))
  175.     endif
  176.  
  177.  
  178. RETURN oXbp
  179.  
  180.  
  181.  
  182. *******************************************************************
  183. * FUNCTION MxSLE() - Wrapper for SLE Class
  184. *******************************************************************
  185.  
  186. FUNCTION MxSLE( oParent, oOwner, aPos, aSize, aPresParam, lVisible, aCaption )
  187.  
  188.     // Notes: aCaption = { cCaption, align, CompoundName }
  189.  
  190.     LOCAL oXbp
  191.  
  192.     oXbp := XbpSLE():new()
  193.     if !empty(aCaption)
  194.         iif(!empty(aCaption[2]),oXbp:align:=aCaption[2],Nil)
  195.         iif(!empty(aCaption[3]),oXbp:setFontCompoundName(aCaption[3]),Nil)
  196.     endif
  197.     oXbp:create( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
  198.     if !empty(aCaption)
  199.         oXbp:setdata(aCaption[1])
  200.     endif
  201.  
  202. RETURN oXbp
  203.  
  204.  
  205.  
  206. *******************************************************************
  207. * FUNCTION MxText() - Wrapper for Text
  208. *******************************************************************
  209.  
  210. FUNCTION MxText( oParent, oOwner, aPos, aSize, aPresParam, lVisible, aCaption )
  211.  
  212.     // Notes: aCaption = { cCaption, options, CompoundName }
  213.  
  214.     LOCAL oXbp
  215.  
  216.     oXbp := XbpStatic():new()
  217.     if !empty(aCaption)
  218.         iif(!empty(aCaption[1]),oXbp:caption:=aCaption[1],Nil)
  219.         iif(!empty(aCaption[2]),oXbp:options:=aCaption[2],Nil)
  220.         iif(!empty(aCaption[3]),oXbp:setFontCompoundName(aCaption[3]),Nil)
  221.     endif
  222.     oXbp:create( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
  223.  
  224. RETURN oXbp
  225.  
  226.  
  227.  
  228.  
  229. *******************************************************************
  230. * FUNCTION MxVline() - Create a Recessed Vertical Line
  231. *******************************************************************
  232.  
  233. FUNCTION MxVline( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
  234.  
  235.     LOCAL oXbp
  236.  
  237.     oXbp := MxStatic():new()
  238.     oXbp:type := XBPSTATIC_TYPE_RECESSEDRECT
  239.     oXbp:create( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
  240.  
  241. RETURN oXbp
  242.  
  243.  
  244.  
  245.  
  246. *******************************************************************
  247. * FUNCTION MxHline() - Create a Recessed Vertical Line
  248. *******************************************************************
  249.  
  250. FUNCTION MxHline( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
  251.  
  252.     LOCAL oXbp
  253.  
  254.     oXbp := MxStatic():new()
  255.     oXbp:type := XBPSTATIC_TYPE_RECESSEDRECT
  256.     oXbp:create( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
  257.  
  258. RETURN oXbp
  259.  
  260.  
  261.